#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <signal.h>

void usage(char* s) {
    printf("usage: %s pid signal!\n", s);
}

int main(int argc, char* argv[]) {
    if(argc != 3) {
        usage(argv[0]);
        exit(1);
    }

    pid_t pid = atoi(argv[1]);
    int signal = atoi(argv[2]);
    kill(pid, signal);
    return 0;
}
















// #include <stdio.h>
// #include <unistd.h>
// #include <signal.h>

// void handler(int signal) {
//     printf("我是%d, 我获得了一个信号%d\n", getpid(), signal);
// }

// int main() {
//     for(int i = 1; i <= 31; i++) {
//         signal(i, handler);
//     }
//     while(1) {
//         sleep(1);
//     }
//     return 0;
// }




// #include <stdio.h>
// #include <stdlib.h>
// #include <sys/wait.h>
// #include <sys/types.h>
// #include <unistd.h>

// int main() {
//     if(fork() == 0) {
//         // 子进程
//         printf("I am running...\n");
//         int t = 100 / 0;
//         exit(0);
//     }
//     // 父进程
//     int status = 0;
//     waitpid(-1, &status, 0);
//     printf("exitcode:%d, core dump:%d, signal:%d\n", 
//     (status >> 8), (status >> 7), (status & 0x7f));
//     return 0;
// }

















// #include <stdio.h>
// #include <unistd.h>

// int main() {
//     printf("I am running...\n");
//     sleep(3);
//     int r = 10 / 0;
//     return 0;
// }
// #include <stdio.h>
// #include <unistd.h>
// #include <stdbool.h>
// int main() {
    //     while(true) {
        //         printf("hello signal!\n");
        //         sleep(1);
//     }
//     return 0;
// }
